/*
 *
 * Project: HiTRUST SMS Center V1.0
 *
 * Modify Information:
 *    Author        Date        Description
 *    ============  ==========  ================================================
 *    Janus Liu     2002/11/28  Create this program spec.
 *    Janus Liu     2002/11/28  V1.0 Release
 *
 * Copyright Notice:
 *    Copyright (c) 2001-2002 Beijing HiTRUST Technology Co., Ltd.
 *    1808 Room, Science & Technology Building, No. 9 South Street,
 *    Zhong Guan Cun, Haidian District, Beijing ,100081, China
 *    All rights reserved.
 *
 *    This software is the confidential and proprietary information of
 *    Beijing HiTRUST Technology Co., Ltd. ("Confidential Information").
 *    You shall not disclose such Confidential Information and shall use it only
 *    in accordance with the terms of the license agreement you entered into
 *    with HiTRUST.
 */

 /**
 *  检查Input的合法输入
 *  ==================================================================================
 *  语法;
 *  字段;字段||字段描述||是否必填(Y/N)||输入长度范围(#/n-m)||只允许填的字符(#0/#./#A/##/限定字符范围)
 *  字段:
 *  要检查Input的名字
 *  字段描述
 *	  要检查Input的描述
 *  是否必填
 *	  Y/必添;N/不必添
 *  输入长度范围
 *  	  #--不限长度
 *  	  n-m--n最小长度,m最大长度
 *  只允许填的字符
 *	  #0--0123456789
 *	  #.--0123456789.
 *	  #A--不包括汉字
 *	  ##--全部
 *	  #M--Mail格式
 *	  限定字符范围--限定字符,例如,ABC或1234567.
 *  例如,
 *	  field1||字段一||#0||Y||2-5||1234567890,
 */

var HiScript= new HiScript();//HiScript实例

function HiScript() {
	/*
	 *在HiScript Class定义value方法,可以通过该Class 的实例对value function进行引用。
	 */
	this.value = value;
	this.checkChar = checkChar;
	this.lTrim = lTrim;
	this.rTrim = rTrim;
	this.trim = trim;
	this.checkDecimal = checkDecimal;

	 /**
     * Class HiScript constructor
     * @param aForm		Form表单名称
     * @param aScripts	检查规则的数组
     * @return true/false false表示检查有非法字符/true表示检查字符合法
     */
	function value(aForm,aScripts){
		for(var i = 0; i< aScripts.length; i++){
			var iFields= aScripts[i].split("||");

			for(var j = 0; j< iFields.length; j++){
				if (j==0){
					var tInput = eval("document." + aForm + "." + iFields[0]);//iFields[0]为Input名称
					/*
					 *判断必填
					 */
					if (iFields[2]=="Y"){//iFields[2]为是否必填
						if(trim(tInput.value).length<1){
							alert( iFields[1] + "不能为空!");//iFields[1]为Input描述
							tInput.focus();
							return false;
						}
					}/*判断必填结束:~*/

					 /*
					  *判断长度
					  */
					if (trim(tInput.value).length>0){
						if (iFields[3]!="#"){//iFields[3]为Input长度范围
							var iLengths = iFields[3].split("-");
							if(trim(tInput.value).length<parseInt(iLengths [0])||trim(tInput.value).length>parseInt(iLengths[1])){
								alert(iFields[1] + "必须长度范围为" + iFields[3] + "!");
								tInput.focus();
								return false;
							}
						}
					}/*判断长度结束:~*/

					 /*
					  *判断填写字符类型
					  *##--所有
					  *#.--0123456789.
					  *#0--0123456789
					  *#A--所有不包括汉字
					  *#ABC--数字和英文
					  */
					if (trim(tInput.value).length>0){//iFields[4]字符范围
						if (iFields[4]=="##"){//全部字符
							//do nothing
						} else if(iFields[4]=="#A"){//不包括中文
							var icheckChar = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789><,.[]{}?/_-+=|\\'\":;`~!@#$%^&*() ";
							if (checkChar(tInput.value,icheckChar)){
								alert(iFields[1] + "不能为中文!");
								tInput.focus();
								return false;
							}
						} else if(iFields[4]=="#."){//只包括1234567890.字符
							var icheckChar = "1234567890.";
							if (checkChar(tInput.value,icheckChar)){
								alert(iFields[1]+ "必须为数字（包含小数）!");
								tInput.focus();
								return false;
							}
						} else if(iFields[4]=="#0"){//只包括1234567890字符
							var icheckChar = "1234567890";
							if (checkChar(tInput.value,icheckChar)){
								alert(iFields[1] + "必须为数字!");
								tInput.focus();
								return false;
							}
						} else if(trim(iFields[4])=="#ABC"){//不包括中文                                                          
	                       var icheckChar = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";                    
	                       if (checkChar(tInput.value,icheckChar)){                                                                
		                       window.alert(trim(iFields[1]) + "必须为字母或数字!");
		                       tInput.focus();                                                                                     
		                   return false; 
		                   }                                                                                      
	                   }   else if(iFields[4]=="#M"){//只包括EMAIL
							if (trim(tInput.value).charAt(0)=="." ||
									trim(tInput.value).charAt(0)=="@" ||
									trim(tInput.value).indexOf('@', 0)  == -1 ||
									trim(tInput.value).indexOf('.', 0)  == -1 ||
									trim(tInput.value).lastIndexOf("@") == trim(tInput.value).length-1 ||
									trim(tInput.value).lastIndexOf(".") == trim(tInput.value).length-1){
								alert("Email的格式不正确!");
								tInput.focus();
								return false;
							}
						} else if(iFields[4]=="#*"){//包括数字，大写字母，小写字母
							var icheckCharA = "1234567890";
							var icheckCharB = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
							var icheckCharC = "abcdefghijklmnopqrstuvwxyz";
                            var iflagA = false;
                            var iflagB = false;
                            var iflagC = false;
							var iflag = false;

							var i = 0;
							for (i = 0; i < tInput.value.length; i++) {
			                    var c = tInput.value.charAt(i);
			                    if (icheckCharA.indexOf(c) >= 0){
									iflagA = true;
			                    }
			                    if (icheckCharB.indexOf(c) >= 0){
									iflagB = true;
			                    }
			                    if (icheckCharC.indexOf(c) >= 0){
									iflagC = true;
			                    }
		                    }

							if (iflagA&&iflagB&&iflagC)
							{
								iflag = true;
							}
							if (!iflag)
							{
								alert(iFields[1] + "必须同时具有大写字母,小写字母,数字!");
								tInput.focus();
                                return false;
							}
						} else if(iFields[4]=="#0."){//电话号码包含字符-
							var icheckChar = "1234567890-";
							if (checkChar(tInput.value,icheckChar)){
								alert(iFields[1] + "必须在'" + icheckChar + "'范围内");
								tInput.focus();
								return false;
							}						
						} else {//只包括限定的字符
							if (checkChar(tInput.value,iFields[4])){
								alert( iFields[1] + "范围为" + iFields[4] + "!");
								tInput.focus();
								return false;
							}
						}

					}/*判断填写字符类型结束:~*/

				}

			}

		}

		return true;
	}

	 /**
     * 检查字符范围
     * @param aCheckString		检查的字符
     * @param aCheckChar	    检查字符的限定范围
     * @return true/false       false表示检查字符在限定范围之内/true表示检查字符在限定范围之外
     */
	function checkChar(aCheckString,aCheckChar) {
		var j = 0;

		for (i = 0; i < aCheckString.length; i++) {
			var c = aCheckString.charAt(i);
			if (aCheckChar.indexOf(c) < 0){
				j++;
				break;
			}
		}

		if (j== 0){
			return false;
		}else{
			return true;
		}
	}/*检查字符范围结束:~*/

	/*
	 * 去掉字串左边的空格
	 *@param strTemp ：要规整的字串。字符串型
	 *@return 规整后的字串。字符串型
	 */
	function lTrim(aValue){
		for (i = 0; i < aValue.length; i++){
			if (aValue.charAt(i) != " "){
				return aValue.substring(i, aValue.length);
			}
		}

		return "";
	}/*去掉字串左边的空格结束:~*/

	/*
	 * 去掉字串右边的空格
	 *@param strTemp ：要规整的字串。字符串型
	 *@return 规整后的字串。字符串型
	 */
	function rTrim(aValue){
		for(i = aValue.length - 1; i >= 0; i--){
			if (aValue.charAt(i) != " "){
				return aValue.substring(0, i + 1);
			}
		}
		return "";
	}/*去掉字串右边的空格结束:~*/

	/*
	 * 去掉字串两边的空格
	 *@param strTemp ：要规整的字串。字符串型
	 *@return 规整后的字串。字符串型
	 */
	function trim(aValue){
		return rTrim(lTrim(aValue));
	}/*去掉字串两边的空格结束:~*/

	function checkMail(){
	}
	function checkDecimal(aCheckString,aCheckChar,aPoint,aMsg) {
		var j = 0;
		
		for (m = 0; m < aCheckString.length; m++) {
			var c = aCheckString.charAt(m);
			if (aCheckChar.indexOf(c) < 0){
				j++;
				break;
			}
		}	
		if (j== 0){
			if(aCheckString.indexOf(".") > 0){
				var end = aCheckString.substring(aCheckString.indexOf(".")+1,aCheckString.length);
				if(end.length > aPoint){
					alert(aMsg + "小数位数不能超过"+ aPoint + "位!");
					return true;
				}else{
					return false;
				}		
			}		
			return false;
		}else{
			alert(aMsg + "必须为数字（包含小数）!");
			return true;
		}
	}
}
